package com.haier.cre.commonframe.utils;

import android.text.TextUtils;
import android.util.Log;

import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.FormatStrategy;
import com.orhanobut.logger.Logger;
import com.orhanobut.logger.PrettyFormatStrategy;

/**
 * 项目名：CommonLibrary
 * 包 名：com.haier.cre.commonframe.utils
 * 创建人：18002063
 * 日 期：2018/10/16
 * 简 述：日志输出控制类
 */
public class L {

    private static final String TAG = "haierMoney";

    //默认不开启debug模式
    private static boolean isDebug = false;

    private static final boolean isLogger = true;

    private L() {
        /* cannot be instantiated */
        throw new UnsupportedOperationException("cannot be instantiated");
    }

    public static void init(boolean debug) {
        isDebug = debug;
        FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
                .showThreadInfo(true)  // 是否打印线程号,默认true
                .methodCount(5)         // 展示几个方法数,默认2
                .methodOffset(7)        // (Optional) Hides internal method calls up to offset. Default 5
                //                .logStrategy(customLog) //是否更换打印输出,默认为logcat
                .tag(TAG)   // 全局的tag
                .build();
        Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
    }


    /**
     * 以级别v的显示输出LOG
     *
     * @param tag 设置tag
     * @param msg
     */
    public static void v(String tag, String msg) {
        if (isDebug) {
            if (isLogger) {
                Logger.t(tag).v(msg + "");
            } else {
                Log.v(tag, msg + "");
            }
        }
    }


    /**
     * 以级别为 d 的形式输出LOG
     *
     * @param tag 设置tag
     * @param msg
     */
    public static void d(String tag, String msg) {
        if (isDebug) {
            if (isLogger) {
                Logger.t(tag).d(msg + "");
            } else {
                Log.d(tag, msg + "");
            }

        }
    }


    /**
     * 以级别为 i 的形式输出LOG
     *
     * @param tag
     * @param msg
     */
    public static void i(String tag, String msg) {
        if (isDebug) {
            if (isLogger) {
                Logger.t(tag).i(msg + "");
            } else {
                Log.i(tag, msg + "");
            }
        }
    }


    /**
     * 以级别为 w 的形式输出LOG
     *
     * @param tag
     * @param msg
     */
    public static void w(String tag, String msg) {
        if (isDebug) {
            if (isLogger) {
                Logger.t(tag).w(msg + "");
            } else {
                Log.w(tag, msg + "");
            }

        }
    }


    /**
     * 以级别为 e 的形式输出LOG
     *
     * @param tag
     * @param msg
     */
    public static void e(String tag, String msg) {
        if (isDebug) {
            if (isLogger) {
                Logger.t(tag).e(msg + "");
            } else {
                Log.e(tag, msg + "");
            }
        }
    }

    /**
     * 输出json数据
     */
    public static void json(String tag, String json) {
        if (isDebug && !TextUtils.isEmpty(json)) {
            Logger.t(tag).json(json);
        }
    }

    /**
     * 输出xml数据
     */
    public static void XML(String tag, String xml) {
        if (isDebug && !TextUtils.isEmpty(xml)) {
            Logger.t(tag).xml(xml);
        }
    }
}
